/**
 * ! 高亮字符串中的搜索词
 * @param {string} str - 原始文本。
 * @param {string} keyword - 需要高亮的搜索词。
 * @param {string} color - 高亮颜色。
 * @returns {string} - 处理后的 HTML 字符串。
 */
export const hightLight = (
  str: string,
  keyword: string = '',
  color: string = '#73CC6D',
): string => {
  console.log(1)

  if (!keyword) {
    return str // 如果搜索词为空，直接返回原始文本
  }
  return str.replace(new RegExp(keyword, 'g'), (match) => {
    console.log(`<span style="color: ${color};">${match}</span>`)

    return `<span style="color: ${color};">${match}</span>`
  })
}

/**
 * ! 通过URL下载文件
 * @param {string} url - 文件URL
 * @param {string} customName - 自定义文件名（可选）
 */
export const downloadFromUrl = async (url: string, customName?: string) => {
  try {
    // 先尝试直接下载
    const link = document.createElement('a')
    link.href = url
    link.download = customName || '圖書'
    link.target = '_blank'
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link)

    // 若浏览器不触发下载（如跳转预览），自动降级为Blob方式
    // （可通过setTimeout延迟判断，或直接用Blob方式）
  } catch (error) {
    // 降级为Blob方式
    const response = await fetch(url)
    const blob = await response.blob()
    const blobUrl = URL.createObjectURL(blob)
    const link = document.createElement('a')
    link.href = blobUrl
    link.download = customName || '圖書'
    link.click()
    URL.revokeObjectURL(blobUrl)
  }
}
